package beans;

import java.io.IOException;
import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.context.RequestContext;
import org.primefaces.event.SelectEvent;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

import controlador.Principal;
import model.Alumno;
import model.CursoPeridoGrupo;
import model.Evaluacion;
import model.Matricula;

public class AlumnoBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public Alumno alumno;
	public List<CursoPeridoGrupo> cursosPeriodoGrupo;
	CursoPeridoGrupo selectedCursoPeriodoGrupo;

	public AlumnoBean() {
		super();
		alumno = Principal.getAlumno();
		cursosPeriodoGrupo = new ArrayList<CursoPeridoGrupo>();
		System.out.println("size mat" + alumno.getMatriculas().size());
		for (Object mat : alumno.getMatriculas()) {
			Matricula matx = (Matricula) mat;
			cursosPeriodoGrupo.add(matx.getCursoPeridoGrupo());
		}
	}

	public void eventChange(SelectEvent event) {
		System.out.println("entro event");
		System.out.println(selectedCursoPeriodoGrupo.getCursoPeridoGrupoId());
		Principal.setCpg_seleccionado(selectedCursoPeriodoGrupo);

		try {
			FacesContext
					.getCurrentInstance()
					.getExternalContext()
					.redirect(
							"/Sistema_Evaluacion_Aprendizaje/faces/alumno_curso.xhtml");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void cargaExamen(ActionEvent actionEvent) {

		Evaluacion eva = Principal.ceexamen(selectedCursoPeriodoGrupo
				.getCursoPeridoGrupoId());
		System.out.println(eva);

		if (eva == null) {
			RequestContext context = RequestContext.getCurrentInstance();
			FacesMessage msg = new FacesMessage(FacesMessage.FACES_MESSAGES,
					"No hay examen programado");
			boolean loggedIn = true;

			FacesContext.getCurrentInstance().addMessage(null, msg);
		} else {
			SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
			String fecha = format.format(new Date());
			try {
				DateFormat dateFormat = new SimpleDateFormat("hh:mm:ss");
				System.out.println("fecha:" + fecha);
				Date actual = dateFormat.parse(fecha);

				if ((eva.getHoraInicio().compareTo(actual) <= 0)
						&& (eva.getHoraFin().compareTo(actual) >= 0)) {
					System.out.println("acepto");

					Principal.setEva_examen(eva);
					System.out.println("guardo");

					try {
						FacesContext
								.getCurrentInstance()
								.getExternalContext()
								.redirect(
										"/Sistema_Evaluacion_Aprendizaje/faces/Pantalla_examen.xhtml");
						System.out.println("conecto");

					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			} catch (Exception e) {
		}

		}
	}

	public CursoPeridoGrupo getSelectedCursoPeriodoGrupo() {
		return selectedCursoPeriodoGrupo;
	}

	public void setSelectedCursoPeriodoGrupo(
			CursoPeridoGrupo selectedCursoPeriodoGrupo) {
		this.selectedCursoPeriodoGrupo = selectedCursoPeriodoGrupo;
	}

	public Alumno getAlumno() {
		return alumno;
	}

	public void setAlumno(Alumno alumno) {
		this.alumno = alumno;
	}

	public List<CursoPeridoGrupo> getCursosPeriodoGrupo() {
		return cursosPeriodoGrupo;
	}

	public void setCursosPeriodoGrupo(List<CursoPeridoGrupo> cursosPeriodoGrupo) {
		this.cursosPeriodoGrupo = cursosPeriodoGrupo;
	}

}
